提供了一种用于管理对在存储器件之间迁移的磁道延伸区的写入操作的计算机程序产品、系统以及方法。处理将磁道延伸区从第二存储器迁移到第一存储器的操作。判定对于要迁移的延伸区是否存在延伸区对象。如果所述延伸区在先前时间预先被从所述第一存储器迁移到所述第二存储器,则所述延伸区对象存在。对于每个磁道,所述延伸区对象包括写入指示符,指示当所述延伸区被预先迁移到所述第二存储器时,自所述先前时间以来是否已在所述第二存储器中更新该磁道。响应于判定所述延伸区对象存在,确定所述延伸区中具有这样的写入指示符的磁道:所述写入指示符指示自所述先前时间以来已在所述第二存储器中更新该磁道。将所确定的磁道的数据从所述第二存储器复制到所述第一存储器中的空闲位置。对于每个所确定的磁道,在所述延伸区对象中更新所确定的磁道的表项,以将该磁道的数据被复制到的空闲位置指示为该磁道的有效地址。
1.一种用于管理第一存储器与第二存储器中的数据的方法,所述方法包括以下步骤:处理将磁道延伸区从所述第二存储器迁移到所述第一存储器的操作;判定对于要迁移的延伸区是否存在延伸区对象,其中如果所述延伸区在先前时间预先被从所述第一存储器迁移到所述第二存储器,则所述延伸区对象存在,并且其中对于每个磁道,所述延伸区对象包括写入指示符,指示当所述延伸区被预先迁移到所述第二存储器时,自所述先前时间以来是否已在所述第二存储器中更新该磁道;及响应于判定所述延伸区对象存在而执行以下步骤:确定所述延伸区中具有这样的写入指示符的磁道:所述写入指示符指示自所述先前时间以来已在所述第二存储器中更新该磁道;将所确定的磁道的数据从所述第二存储器复制到所述第一存储器中的空闲位置;及对于每个所确定的磁道,在所述延伸区对象中更新所确定的磁道的表项,以将该磁道的数据被复制到的空闲位置指示为该磁道的有效地址。
2.如权利要求1的方法,其中所述延伸区对象维护所述第一存储器中的磁道数据的先前版本的信息,其中对于具有至少一个先前版本的每个磁道,该磁道的表项包括每个先前版本的先前版本地址,所述先前版本地址指示该磁道的该先前版本的数据在所述第一存储器中的位置,其中所述方法还包括以下步骤:对于每个所确定的磁道,将新的先前版本地址设置成该磁道的有效地址,然后更新该有效地址以指示来自所述第二存储器的数据被复制到的空闲位置。
3.如权利要求1或2的方法,还包括:提供包括固态存储器件的所述第一存储器;以及提供包括具有慢于所述固态存储器件的输入/输出存取规范的存储器件类型的所述第二存储器。
4.如权利要求1或2的方法,其中所述第二存储器将磁道连续存储在所述延伸区中,并且其中所述方法还包括:将所述第二存储器中的已修改磁道复制到所述第一存储器中与所述延伸区内的未修改磁道有关的非相邻位置。
5.如权利要求1或2的方法,其中每个表项包括:从所述有效地址中标识的磁道数据计算的有效校验和值,并且所述有效校验和值用于在所述第一存储器中维护的磁道的至少一个先前版本;所述第一存储器中的磁道的先前版本的先前版本地址;以及从所述先前版本地址中标识的磁道数据计算的先前版本校验和值,其中所述方法还包括以下步骤:接收对所述第一存储器中存在的延伸区中的目标磁道的写入;从针对所述目标磁道的写入计算暂时校验和;判定所述暂时校验和是否匹配所述有效校验和、或是否匹配所述目标磁道的延伸区对象中的表项内的至少一个先前版本校验和中的一个;使用所述有效地址或所述先前版本地址以及对应有效或先前版本校验和,所述有效或先前版本校验和匹配所述有效地址的所述暂时校验和以及所述目标磁道的所述延伸区对象中的所述表项的有效校验和;及响应于判定所述暂时校验和不匹配所述有效校验和或不匹配所述至少一个先前版本校验和中的任一个,将对所述目标磁道的写入操作写入到所述第一存储器中的空闲位置。
6.如权利要求5的方法,其中响应于判定所述暂时校验和匹配所述有效校验和或匹配所述至少一个先前版本校验和中的一个,对所述目标磁道的写入的写入步骤不写入所述第一存储器。
7.如权利要求5的方法,其中使用所述有效地址或所述先前版本地址以及匹配所述暂时校验和的对应校验和的步骤包括:响应于判定所述暂时校验和匹配所述有效校验和或匹配所述至少一个先前版本校验和中的一个而返回写入完成;及响应于判定所述暂时校验和匹配所述至少一个先前版本校验和中的一个,执行以下步骤:针对匹配的先前版本校验和而缓冲所述先前版本地址与所述先前版本校验和;将新的先前版本地址与新的先前版本校验和设置成所述有效地址与所述有效校验和的值;及在设置所述新的先前版本地址与所述新的先前版本校验和之后,分别将所述有效地址与所述有效校验和设置成所缓冲的先前版本地址与所述先前版本校验和。
8.如权利要求1或2的方法,其中每个表项包括:从所述有效地址中标识的磁道数据计算的有效校验和值,并且所述有效校验和值用于在所述第一存储器中维护的磁道的至少一个先前版本;所述第一存储器中的磁道的先前版本的先前版本地址;以及从所述先前版本地址中标识的磁道数据计算的先前版本校验和值,其中所述方法还包括以下步骤:接收对所述第二存储器中存在的延伸区中的目标磁道的写入;从针对所述目标磁道的写入计算暂时校验和;判定所述暂时校验和是否匹配所述有效校验和、或是否匹配所述目标磁道的延伸区对象中的表项内的至少一个先前版本校验和中的一个;响应于判定匹配,使用所述有效地址或所述先前版本地址以及对应有效或先前版本校验和,所述有效或先前版本校验和匹配所述有效地址的所述暂时校验和以及所述目标磁道的所述延伸区对象中的所述表项的有效校验和。
9.如权利要求8的方法,所述方法还包括以下步骤:设置所述延伸区对象中的目标磁道的所述表项内的所述指示符,以指示已响应于判定所述暂时校验和不匹配所述有效校验和或不匹配所述至少一个先前版本校验和中的一个而在所述第二存储器中更新该磁道,其中所述指示符指示所述第一存储器中的所述有效地址处的所述目标磁道的数据不是在所述第二存储器中维护的磁道数据的最新版本。
10.如权利要求8的方法,所述方法还包括以下步骤:响应于判定所述暂时校验和匹配所述至少一个先前版本校验和中的一个,执行以下步骤:针对匹配的先前版本校验和而缓冲所述先前版本地址与所述先前版本校验和;将新的先前版本地址与新的先前版本校验和分别设置成所述有效地址与所述有效校验和的值;及在设置所述新的先前版本地址与所述新的先前版本校验和之后,分别将所述有效地址与所述有效校验和设置成所缓冲的先前版本地址与所缓冲的先前版本校验和。
11.如权利要求1或2的方法,其中每个表项包括多个列,所述多个列包括:在有效校验和列中的有效校验和值,其从有效地址列中的有效地址内标识的磁道数据来计算,且用于在所述第一存储器中维护的磁道的至少一个先前版本;先前版本地址列,其具有所述第一存储器中的磁道的先前版本的地址;以及先前版本校验和列,其具有从所述先前版本地址处的磁道数据计算的校验和值,其中所述方法还包括以下步骤:接收对所述第一存储器或所述第二存储器中存在的延伸区中的目标磁道的写入;从针对所述目标磁道的写入计算暂时校验和;判定所述暂时校验和是否匹配所述目标磁道的延伸区对象中的表项内的所述至少一个先前版本校验和中的一个;将所述先前版本地址与匹配所述暂时校验和的对应先前版本校验和写入到所述目标磁道的延伸区对象中的所述表项的所述有效地址列与所述有效校验和列;及移位版本早于所述先前版本地址的版本且校验和被写入到所述有效地址列与所述有效校验和列的任何先前地址列与先前校验和列,以覆写包括所述先前版本地址与写入到所述有效地址列与所述有效校验和列的对应先前版本校验和的所述先前地址列与所述先前校验和列。
12.一种与第一存储器及第二存储器通信的系统,所述系统包括:处理器;内存,其包括由所述处理器执行的代码以执行操作,所述系统包括:处理部件,用于处理将磁道延伸区从所述第二存储器迁移到所述第一存储器的操作;判定部件,用于判定对于要迁移的延伸区是否存在延伸区对象,其中如果所述延伸区在先前时间预先被从所述第一存储器迁移到所述第二存储器,则所述延伸区对象存在,并且其中对于每个磁道,所述延伸区对象包括写入指示符,指示当所述延伸区被预先迁移到所述第二存储器时,自所述先前时间以来是否已在所述第二存储器中更新该磁道;以及响应于判定所述延伸区对象存在:所述判定部件还可操作以确定所述延伸区中具有这样的写入指示符的磁道:所述写入指示符指示自所述先前时间以来已在所述第二存储器中更新该磁道;复制部件,用于将所确定的磁道的数据从所述第二存储器复制到所述第一存储器中的空闲位置;以及更新部件,对于每个所确定的磁道,所述更新部件用于在所述延伸区对象中更新所确定的磁道的表项,以将该磁道的数据被复制到的空闲位置指示为该磁道的有效地址。
13.如权利要求12的系统,其中所述延伸区对象维护所述第一存储器中的磁道数据的先前版本的信息,其中对于具有至少一个先前版本的每个磁道,该磁道的表项包括每个先前版本的先前版本地址,所述先前版本地址指示该磁道的该先前版本的数据在所述第一存储器中的位置,其中所述系统还包括:设置部件,对于每个所确定的磁道,所述设置部件将新的先前版本地址设置成该磁道的有效地址,然后更新该有效地址以指示来自所述第二存储器的数据被复制到的空闲位置。
14.如权利要求12或13的系统,其中所述第一存储器包括固态存储器件,并且其中所述第二存储器包括具有慢于所述固态存储器件的输入/输出存取规范的存储器件类型。
15.如权利要求12或13的系统,其中每个表项包括:从所述有效地址中标识的磁道数据计算的有效校验和值,并且所述有效校验和值用于在所述第一存储器中维护的磁道的至少一个先前版本;所述第一存储器中的磁道的先前版本的先前版本地址;以及从所述先前版本地址中标识的磁道数据计算的先前版本校验和值,其中所述系统还包括:接收部件,用于接收对所述第一存储器中存在的延伸区中的目标磁道的写入;计算部件,用于从针对所述目标磁道的写入计算暂时校验和;所述判定部件,其还可操作以判定所述暂时校验和是否匹配所述有效校验和、或是否匹配所述目标磁道的延伸区对象中的表项内的至少一个先前版本校验和中的一个;使用部件,用于使用所述有效地址或所述先前版本地址以及对应有效或先前版本校验和,所述有效或先前版本校验和匹配所述有效地址的所述暂时校验和以及所述目标磁道的所述延伸区对象中的所述表项的有效校验和;以及写入部件,用于响应于判定所述暂时校验和不匹配所述有效校验和或不匹配所述至少一个先前版本校验和中的任一个,将对所述目标磁道的写入操作写入到所述第一存储器中的空闲位置
16.如权利要求12或13的系统,其中每个表项包括:从所述有效地址中标识的磁道数据计算的有效校验和值,并且所述有效校验和值用于在所述第一存储器中维护的磁道的至少一个先前版本;所述第一存储器中的磁道的先前版本的先前版本地址;以及从所述先前版本地址中标识的磁道数据计算的先前版本校验和值,其中所述系统还包括:接收部件,用于接收对所述第二存储器中存在的延伸区中的目标磁道的写入;计算部件,用于从针对所述目标磁道的写入计算暂时校验和;所述判定部件,其还可操作以判定所述暂时校验和是否匹配所述有效校验和、或是否匹配所述目标磁道的延伸区对象中的表项内的至少一个先前版本校验和中的一个;使用部件,用于响应于判定匹配而使用所述有效地址或所述先前版本地址以及对应有效或先前版本校验和,所述有效或先前版本校验和匹配所述有效地址的所述暂时校验和以及所述目标磁道的所述延伸区对象中的所述表项的有效校验和。
17.如权利要求12或13的系统,其中每个表项包括多个列,所述多个列包括:在有效校验和列中的有效校验和值,其从有效地址列中的有效地址内标识的磁道数据来计算,且用于在所述第一存储器中维护的磁道的至少一个先前版本;先前版本地址列,其具有所述第一存储器中的磁道的先前版本的地址;以及先前版本校验和列,其具有从所述先前版本地址处的磁道数据计算的校验和值,其中所述系统还包括:接收部件,用于接收对所述第一存储器或所述第二存储器中存在的延伸区中的目标磁道的写入;计算部件,用于从针对所述目标磁道的写入计算暂时校验和;判定部件,用于判定所述暂时校验和是否匹配所述目标磁道的延伸区对象中的表项内的所述至少一个先前版本校验和中的一个;写入部件,用于将所述先前版本地址与匹配所述暂时校验和的对应先前版本校验和写入到所述目标磁道的延伸区对象中的所述表项的所述有效地址列与所述有效校验和列;及移位部件,用于移位版本早于所述先前版本地址的版本且校验和被写入到所述有效地址列与所述有效校验和列的任何先前地址列与先前校验和列,以覆写包括所述先前版本地址与写入到所述有效地址列与所述有效校验和列的对应先前版本校验和的所述先前地址列与所述先前校验和列。
技术领域本发明涉及一种用于管理对在存储器件之间迁移的磁道延伸区(extentsxa0oftracks)的写入操作的方法、系统以及计算机程序产品。
背景技术在层级存储环境中,磁道延伸区可在诸如硬盘驱动器、固态存储器件之类的不同存储器件层之间迁移,这取决于存储器件的特征与存取频率和数据优先级。例如,较常存取的延伸区和/或较高优先级的延伸区可从较慢存取层迁移到较快存取层,而不常存取的延伸区和/或较低优先级的延伸区可迁移到较慢存取层。在当前层级存储环境中,在给定时段内在上层/池和下层/池之间多次来回迁移延伸区。在此前提下,下层将升级给定延伸区,而不会认识到该延伸区在整体或部分上仍在上层中保持未被修改。当迁移延伸区时,可能将来自延伸区的所有数据从一个存储器件复制到另一个存储器件。此类迁移将花费大量时间。在当前分层存储架构中,上层可包含从先前降级的延伸区到下层的旧的未修改(冗余)区(tracts),其可用作第二级缓存。当前解决方案的主要缺点是效率较低,因为固态存储器件(SSD)驱动器的读取性能显著高于硬盘驱动器的读取性能。从已被停止供电的硬盘驱动器不必要地读取数据还会:●缩短硬盘的寿命●降低电源效率●增加数据请求的存取时间,因为必须首先为驱动器供电本领域中需要用于在存储器件之间迁移磁道延伸区并解决上述问题的改进的技术。
发明内容提供了一种用于管理对在存储器件之间迁移的磁道延伸区的写入操作的计算机程序、计算机程序产品、系统以及方法。处理将磁道延伸区从第二存储器迁移到第一存储器的操作。判定对于要迁移的延伸区是否存在延伸区对象。如果所述延伸区在先前时间预先被从所述第一存储器迁移到所述第二存储器,则所述延伸区对象存在。对于每个磁道,所述延伸区对象包括写入指示符,指示当所述延伸区被预先迁移到所述第二存储器时,自所述先前时间以来是否已在所述第二存储器中更新该磁道。响应于判定所述延伸区对象存在,确定所述延伸区中具有这样的写入指示符的磁道:所述写入指示符指示自所述先前时间以来已在所述第二存储器中更新该磁道。将所确定的磁道的数据从所述第二存储器复制到所述第一存储器中的空闲位置。对于每个所确定的磁道,在所述延伸区对象中更新所确定的磁道的表项,以将该磁道的数据被复制到的空闲位置指示为该磁道的有效地址。
附图说明现在将仅通过实例的方式参考附图中所示的优选实施例描述本发明,这些附图是:图1示出根据现有技术并且其中可实现本发明的一个优选实施例的计算环境的一个实施例;图2示出根据本发明的一个优选实施例的延伸区对象中的表项的一个实施例;图3示出根据本发明的一个优选实施例的作为延伸区表的延伸区对象的一个实施例;图4示出根据本发明的一个优选实施例的将延伸区从第二存储器迁移至第一存储器的操作的一个实施例;图5示出根据本发明的一个优选实施例的用于处理对第一存储器中存在的延伸区中的磁道的写入请求的操作的一个实施例;图6示出根据本发明的一个优选实施例的用于处理对第二存储器中存在的延伸区中的磁道的写入请求的操作的一个实施例。
具体实施方式图1示出在第一存储器4与第二存储器6中存储数据磁道的服务器2的一个实施例。服务器2包括处理器8,处理器8包括一个或多个处理器器件与内存10,在内存10中,加载操作系统12以由处理器8执行。操作系统12包括延伸区迁移代码14,以管理在第一存储器4与第二存储器6之间由延伸区对象16所表示的磁道延伸区的迁移。磁道延伸区可以在第一存储器4或第二存储器6之一中是有效的,并可在第一存储器4与第二存储器6之间迁移。服务器2可以以循环架构等,通过存储接口的单独电缆在网络上与第一存储器4和第二存储器6通信。第一存储器4与第二存储器6可包括不同类型的存储器件,诸如固态存储器件(SSD),其包含固态电子器件,诸如电可擦除可编程只读存储器(EEPROM)、闪存、快闪磁盘(FlashDisk)、随机存取内存(RAM)驱动器、存储级内存(SCM)等、磁性存储盘、光盘、磁带等。内存8可包括一个或多个易失性或非易失性内存器件。延伸区迁移代码14可以备选地实施为操作系统12外部的应用代码,或可以以硬件逻辑实施,诸如专用集成电路(ASIC)、或计算机可读存储介质中的可编程处理器执行代码。在一个实施例中,第一存储器4与第二存储器6可包括存储器件层级配置内的存储层,其中层基于诸如输入/输出(I/O)存取规范(profile)速度、冗余之类的特征来定义存储器。例如,第一存储器4可包括高速存储器,诸如SSD或RAM驱动器,且第二存储器6可包括较慢存取存储器,诸如硬盘驱动器或磁带介质。采用本领域中公知的层级管理存储技术,操作系统12可调用延伸区迁移代码14,以将较不常被存取和/或具有较低优先级的延伸区从第一存储器4迁移至第二存储器6,并将较常被存取和/或较高优先级的磁道延伸区从第二存储器6迁移至第一存储器4。除了数据存取频率与数据优先级之外的数据特征可用来判定是否要在存储层级的较高与较低层存储器件之间迁移延伸区。在特定实施例中,延伸区对象16标识在第二存储器6中连续存储的磁道,这在第二存储器6包括对于介质中连续存储磁道具有改进的读取/写入存取的存储器件(诸如硬盘驱动器与磁带驱动器)的实施例中是有利的。但是,延伸区中的磁道数据可能未连续存储在第一存储器内,所述第一存储器可包括未改进连续存储磁道存取的存储器件,诸如固态存储器件(SSD)或随机存取内存(RAM)驱动器。延伸区对象16包括在一个延伸区内管理的每个磁道的表项。每个磁道可包括相同大小的单个数据单元。服务器2可在第一存储器4与第二存储器6中,维护服务器2管理的每个单独延伸区的多个延伸区对象16。另外,可存在额外的存储器件,使得服务器2可在两个以上存储器中管理磁道延伸区的迁移,其中不同存储器可具有不同I/O存取规范。图2示出延伸区对象16中的表项50的一个实施例,所述表项提供有关延伸区中的一个磁道的信息。磁道标识符(ID)52标识延伸区中的磁道。修改指示符54指示当延伸区与磁道预先从第一存储器4迁移至第二存储器6时,自先前时间以来,是否已在第二存储器6中更新该磁道,因此指示当第二存储器6上存在磁道与延伸区时,第一存储器4是否具有磁道的最新版本。有效地址56指示第一存储器4中具有第二存储器6中的磁道的最新版本的地址。有效校验和58包括从有效地址56处的数据计算的校验和值。所述校验和值可利用本领域中公知的校验和或散列算法计算,以确定数据的独特或可能独特的表示。如果修改指示符52指示已在第二存储器6更新磁道且第一存储器4没有最新数据版本,则由于在第二存储器6处的更近的更新,有效地址56所标识的数据不包括有效版本,而是包括先前版本。在特定实施例中,可将数据更新写入第一存储器4中的新的空闲位置。在此情况下,磁道的延伸区表项50可维护第一存储器4中存储的磁道的每个先前版本a...n的先前版本地址60
1....60
n以及从磁道的先前版本计算的先前版本校验和62
1....62
n。延伸区表80中的先前版本地址60
1...60
n的顺序可指示先前版本的年龄,其中最新的先前版本地址是第一个,即60
1,最旧的先前版本地址为最后一个,即60
n。服务器2可基于各种因素(诸如可用空间、预定的版本限制数、可用来存储先前版本的预定空间等)限制在第一存储器4中所维护的数据版本数。在第一存储器4包括SSD的实施例中,当更新时常存取的逻辑地址时,作为称为写入平衡(Wearxa0Leveling)的过程的一部分,将最近写入的数据写入到第一存储器4中的新的实际位置以跨存储器件分散写入,这将延长固态存储器件的寿命。持续写入到固态器件的同一物理位置会损耗固态存储器件中的存储块。图3示出实现为延伸区表80的延伸区对象的一个实例,所述延伸区表对于每个磁道具有一个行,并且各列提供有关延伸区对象的信息。图4示出在延伸区迁移代码14中实施的操作的一个实施例,此操作使延伸区从第二存储器6迁移或升级到第一存储器4。在处理迁移延伸区的请求(步骤100)后,判定(步骤102)要迁移磁道的延伸区的延伸区对象16是否存在。如果否,则延伸区迁移代码14进行步骤104,以创建延伸区的新延伸区对象16,并清除每个延伸区表项50(图2)的修改指示符54,以指示未在第二存储器2中修改数据。对于在延伸区16的每个磁道,延伸区迁移代码14对延伸区中每个磁道执行操作循环(步骤106-114)。对于每个磁道,将磁道从第二存储器6复制到第一存储器4中的空闲位置(步骤108)。延伸区迁移代码14计算(步骤110)所复制磁道的校验和,并将磁道的有效地址56设置(步骤112)成第一存储器4中该磁道被复制到的空闲位置;且将有效校验和58设置成所计算的校验和值。在初次将延伸区升级及迁移到第一存储器4时,执行步骤104-114的操作。如果(步骤102)对于正在升级的延伸区,延伸区对象16已存在,则该延伸区预先被从第一存储器4迁移到第二存储器6,且在步骤116至128对延伸区中每个磁道执行循环,以从第二存储器6迁移或升级到第一存储器4。如果(步骤118)所考虑磁道的修改指示符54指示磁道未在第二存储器6中更新,则不对磁道执行任何操作且不会复制数据,因为数据并未改变。如果(步骤118)磁道的修改指示符54指示磁道已被修改,则将磁道的数据从第二存储器6复制(步骤120)到第一存储器4中的空闲位置。将磁道的新的先前版本地址设置成当前有效地址56,使磁道的当前数据成为先前版本,且将磁道的新的先前版本校验和设置成当前有效校验和58。然后,将有效地址56设置(步骤124)成数据被复制到的空闲位置的地址,且将有效校验和58设置(步骤126)成从复制到空闲位置的数据计算的校验和值。然后,先前版本对(先前版本地址60
1....60
n与先前版本校验和62
a....62
n)被重新排序(步骤127),所以先前版本信息会按先前版本的年龄或版本号加以排序。在延伸区对象16包括延伸区表80(图3)以执行步骤127的重新排序操作及产生当前有效数据与校验和先前版本的一个实施例中,延伸区迁移代码14可将当前的先前版本60
1....60
n与62
a....62
n的列向右移两列,以覆写及占据先前版本2....n+l的列,然后将当前有效地址56与当前有效校验和58复制到最新当前先前版本地址60
1与62
1。如此,使当前版本地址56与校验和58成为最近先前版本,以在有效字段56与58内腾出空间给复制到空闲位置的已更新数据。在备选实施例中,排序以指示先前版本排序的指针或其他信息表示。对于图4的操作,当延伸区从第二存储器6迁移或升级到第一存储器4时,自延伸区从第一存储器4迁移或降级到第二存储器6以来,只有已在第二存储器6中改变的磁道才被复制到第一存储器4。在第一存储器4包括SSD的实施例中,此描述的操作提供写入平衡,因为新数据被写入到新位置,且可避免对第一存储器4的非必要写入,因为自先前迁移以来,未在第二存储器6修改的数据不会被复制到第一存储器4。图5示出由操作系统12执行的操作的一个实施例,其处理对第一存储器4中存在的延伸区中的磁道的写入。在接收写入后,操作系统12(或一些其他代码)从目标磁道的写入计算(步骤152)暂时校验和。如果(步骤154)暂时校验和匹配磁道的有效校验和58,则将完成返回给写入请求,因为在磁道有效地址56处的数据与要写入的数据相同。如此,数据不必被写入到第一存储器4,这在第一存储器包括寿命受到连续写入到相同位置的影响而减少的SSD或其他类型器件的实施例中,会降低写入平衡。如果(步骤154)暂时校验和值不匹配有效校验和58,则操作系统12判定(步骤158)暂时校验和值是否匹配先前版本校验和62
1....62
n中的一个。可能存在零个或更多先前版本地址与校验和值。如果匹配,则操作系统12执行操作160-166,以使用在先前版本地址60
1....60
n之一处的先前版本数据,因为先前版本数据匹配要写入的数据。在步骤160,操作系统12将新的先前版本地址与新的先前版本校验和值设置(步骤160)成有效地址与有效校验和值。此新的先前版本地址与新的先前版本校验和变成最新的先前版本地址60
1与校验和62
1。操作系统12将磁道的写入数据写入(步骤162)到第一存储器的空闲位置,并将有效地址56设置(步骤164)成数据被复制到的空闲位置的地址,并将有效校验和58设置(步骤166)成从空闲位置中的数据计算的校验和值。然后,先前版本对(先前版本地址60
1....60
n与先前校验和62
a....62
n)被重新排序(步骤167),所以先前版本信息会按先前版本的年龄或版本号加以排序。在延伸区对象16包括延伸区表80(图3)的实施例中,在创建新的先前版本地址与先前版本校验和以执行步骤167的重新排序操作之后,操作系统12可在所述表中将所有当前的先前版本地址60
1...60
n与校验和62
1...62
n向右移两列,以覆写列数据,并使其成为先前版本地址60
2...60
n+1与校验和62
2...62
n+1,然后所创建的新的先前版本地址与校验和变成先前版本地址60
1与校验和62
1。在备选实施例中,排序可藉由指示先前版本排序的指针或其他信息表示。如果(步骤158)暂时校验和匹配一个所确定的先前版本校验和62
1....62
n,则操作系统12缓冲(步骤168)匹配先前校验和的所确定的先前地址与先前校验和。操作系统12将新的先前版本地址与新的先前版本校验和设置(步骤170)成当前有效地址56与有效校验和58的值,以产生最新先前版本的当前有效地址与校验和。在执行步骤170之后,操作系统12接着分别将有效地址56与有效校验和58设置(步骤172)成所缓冲的先前版本地址与先前的版本校验和。在延伸区对象16包括延伸区表80(图3)的实施例中,在步骤168-172产生一个先前版本地址(例如,60
i)、先前版本校验和(例如,62
i)、当前有效版本56与58之后,操作系统12可接着在匹配的缓冲先前版本地址60
i与校验和62
i之后,在表80中将先前版本地址60
i+1...60
n与先前版本校验和62
i+1...62
n的所有列向左移两列,以覆写复制到有效字段56与58的匹配的缓冲先前版本地址60
i与校验和62
i所占据的列。藉由图5所描述的实施例,操作系统12尝试使用当前有效地址56与58或一个先前版本地址60
l...60
n与新的有效地址56的校验和62
l...62
n与校验和58,以避免必须将数据写入到第一存储器4。如此,操作系统12针对新的写入数据,重复使用已在第一存储器4中存在的数据。在第一存储器4包括SSD的实施例中,使用写入的有效或先前版本数据以避免写入将避免磨损及延长SSD的寿命。图6示出在操作系统12代码(或其他组件)中实施的操作的一个实施例,其处理对第二存储器6中存在的延伸区内的目标磁道的写入。当图6的操作开始时,延伸区对象16已建立。响应于(步骤200)接收到写入,操作系统12从目标磁道的写入计算(步骤202)暂时校验和。如果(步骤204)暂时校验和匹配磁道的有效校验和58且如果(步骤205)修改指示符54设置成指示第二存储器6内的磁道先前已修改,使得修改未在延伸区对象16中反映,则修改指示符54被清除(步骤206),因为第一存储器4磁道将具有在第二存储器6中修改的磁道。写入数据被写入(步骤208)到第二存储器中的磁道,且将完成返回(步骤210)给写入请求。在此情况下,因为在第一存储器4内的磁道的有效地址56处的数据与在第二存储器6写入的数据相同,所以延伸区对象16不必被更新。如果(步骤205)修改指示符54未设置,则控制会进行步骤210而不写入任何数据,因为在第一存储器4与第二存储器6两者内的有效或最近写入数据具有已匹配待写入数据的数据。如果(步骤204)暂时校验和不匹配有效校验和58,则操作系统12判定(步骤212)暂时校验和是否匹配先前版本校验和62
l....62
n中的一个。可能存在零个或更多先前版本地址与校验和值。如果(步骤212)存在匹配,则操作系统12执行操作214-218,以使用在先前版本地址60
l....60
n中的一个处的先前版本磁道,因为在第一存储器6内的所确定的先前版本的磁道匹配写入到第二存储器6中的磁道的数据。操作系统12缓冲(步骤214)所确定的先前版本地址(例如,60
i)、匹配的先前版本校验和62
i的先前版本校验和(例如,62
i)。操作系统12将新的先前版本地址与新的先前版本校验和设置(步骤216)成当前有效地址56与有效校验和58值。执行步骤216之后,操作系统12分别将有效地址56与有效校验和58设置(步骤218)成缓冲的先前版本地址60
i与先前版本校验和62
i。操作系统12清除(步骤206)修改指示符54以指示磁道未被修改,因为第一存储器4具有在第二存储器6处修改的数据。然后,控制进行步骤206至步骤208,以完成对第二存储器6的写入。在延伸区对象16包括延伸区表80(图3)的实施例中,在步骤212-216产生一个先前版本地址(例如,60
i)与先前版本校验和(例如,62
i)、当前有效版本56与58之后,操作系统12可接着在匹配的缓冲先前版本地址60
i与校验和62
i之后,在表80中将先前版本地址60
i+1与先前版本校验和62
i+1的所有列向左移动两列,以覆写匹配的缓冲先前版本地址60
i与校验和62
i所占据的列。如果(步骤212)暂时校验和不匹配一个先前版本校验和,则设置修改指示符42(步骤222),以指示数据已在第二存储器6中被修改,且控制进行到步骤208以完成到第二存储器6的写入。设置修改指示符54指示第一存储器6可能没有写入到第二存储器6的数据。在此情况下,在第一存储器6中,有效地址56处的数据不是“有效数据”,因为磁道数据已在第二存储器6中被修改,且在有效地址58处的磁道数据可能为最近先前版本。因此,当设置修改指示符54时,有效地址56与有效校验和56信息可能不能用于磁道的实际有效数据。藉由图6所描述的实施例,如果第一存储器4中的磁道的先前存在数据匹配要写入到第二存储器6的数据,操作系统12将尝试使用当前有效地址56与58、或一个先前版本60
l...60
n与校验和62
l...62
n,作为在第一存储器4中的新有效地址56与有效校验和58。藉由更新延伸区对象16以反映第一存储器4具有写入到第二存储器6的数据,在将具有修改后的磁道的延伸区从第二存储器6迁移回第一存储器4时,不必随后使用写入到第二存储器6的磁道的数据来更新第一存储器4,因为修改指示符54被清除。在第一存储器4包括SSD的实施例中,使用第一存储器4内的有效或先前磁道版本用于到第二存储器6的写入,将避免在稍后从第二存储器6迁移到第一存储器4的过程内必须写入第一存储器。避免对第一存储器4的写入可减少磨损及延长SSD的寿命。在图5与6的实施例中,在没有针对第一存储器4或第二存储器6中正在被写入的磁道维护的延伸区对象的情况下,允许写入进行而不执行任何进一步动作。另外,如果对于写入操作存在多个要写入的磁道,则针对每个要写入的磁道执行图5与6的操作。当将延伸区从第二存储器迁移到第一存储器时、当执行对第一存储器中存在的延伸区的写入、以及当执行对第二存储器的写入时,所描述的实施例提供了用于减少写入第一存储器的次数的技术。在第一存储器包括SSD或其他存储器件(其存储寿命受到连续更新同一单元的影响而减少)的实施例中,所描述的实施例可减少磨损及延长存储器件的寿命。其他实施例细节所描述的操作可以以利用标准编程和/或工程技术的方法、装置或计算机程序产品实施,以产生软件、固件、硬件或其任何组合。因此,实施例的各方面可采用完全硬件实施例、完全软件实施例(包括固件、驻留软件、微码等)、或结合软件与硬体方面(所有在此通常称为“电路”、“模块”或“系统”)的实施例的形式。此外,实施例的各方面可采用在其中包含计算机可读程序代码的一个或多个计算机可读介质中体现的计算机程序产品的形式。可以使用一个或多个计算机可读介质的任何组合。计算机可读介质可以是计算机可读信号介质或计算机可读存储介质,计算机可读存储介质例如可以是-但不限于-电的、磁的、光的、电磁的、红外线的、或半导体的系统、装置、器件、或前述各项的任何适当的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括以下:有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或前述各项的任何适当的组合。在本文语境中,计算机可读存储介质可以是任何含有或存储供指令执行系统、装置或器件使用的或与指令执行系统、装置或器件相联系的程序的有形介质。计算机可读信号介质可以包括例如在基带中或作为载波的一部分传播的带有计算机可读程序代码的数据信号。这样一种传播信号可以采取任何适当的形式,包括-但不限于-电磁的、光的或其任何适当的组合。计算机可读信号介质可以是不同于计算机可读存储介质的、可以传达、传播或传输供指令执行系统、装置或器件使用的或与指令执行系统、装置或器件相联系的程序的任何一种计算机可读介质。包含在计算机可读介质中的程序代码可以采用任何适当的介质传输,包括-但不限于-无线、有线、光缆、射频等等、或上述各项的任何适当的组合。用于执行本发明的各方面的操作的计算机程序码,可以以一种或多种程序设计语言的任何组合来编写,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++之类,还包括常规的过程式程序设计语言-诸如“C”程序设计语言或类似的程序设计语言。程序码可以完全地在用户的计算上执行、部分地在用户的计算机上执行、作为一个独立的软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种情形中,远程计算机可以通过任何种类的网络-包括局域网(LAN)或广域网(WAN)-连接到用户的计算机,或者,可以(例如利用因特网服务提供商来通过因特网)连接到外部计算机。以下参照按照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明的各方面。要明白的是,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得通过计算机或其它可编程数据处理装置执行的这些指令,产生实现流程图和/或框图中的方框中规定的功能/操作的装置。也可以将这些计算机程序指令存储在能指令计算机、其它可编程数据处理装置或其他设备以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令产生一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置的制品。也可以将计算机程序指令加载到计算机、其它可编程数据处理装置或其他设备上,使得在所述计算机、其它可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而在所述计算机或其它可编程装置上执行的指令就提供实现流程图和/或框图中的方框中规定的功能/操作的过程。在特定实施例中,图1的服务器能以云计算环境中的云部件实施。在云计算环境中,在云计算递送中涉及的硬件与软件组件的系统架构可包括在网络(诸如因特网)上彼此通信的多个云组件。例如,在特定实施例中,图1的服务器可在网络云中提供客户端、其他服务器和软件和/或硬件组件以及存储和数据处理服务。服务器2可提供对存储器4与6的可靠存储服务与存取,以匹配云消费者的服务质量要求,包括需要存储的客户端及提供存储服务给客户端的其他服务器。服务器2可与客户端通信,以通过网络接口或其他应用编程接口提供存储器4与6的存储服务。除非明确表示,否则术语“一个实施例”、“实施例”、“各实施例”、“该实施例”、“所述实施例”以及“一个或多个实施例”指“本发明的一个或多个(但不是全部)实施例”。除非明确表示,否则术语“包括”、“包含”、“具有”及其变型指“包括但不限于”。除非明确表示,否则列举的项目列表不暗示任何或所有项目是互斥的。除非明确表示,否则术语“一”、“一个”与“该”指“一个或多个”。除非在此特别指定,否则彼此通信的设备不必彼此连续通信。此外,彼此通信的设备可直接或通过一个或多个媒介物间接通信。具有一些彼此通信的组件的实施例的描述不暗示需要所有此类组件。相反,描述多种可选组件来示意说明本发明的多种可能实施例。此外,尽管可以按照连续的顺序来描述处理步骤、方法步骤、算法或类似步骤,但是此类处理、方法和算法可以被配置为以替代顺序工作。换句话说,所描述的步骤的任何序列或顺序并不一定指示要求按此顺序执行步骤。实际可以按任何顺序执行在此描述的处理的步骤。此外,可以同时执行某些步骤。当在此描述单个设备或物品时,将显而易见的是,可以使用多个设备/物品(无论它们是否协作)来代替单个设备/物品。同样,当在此描述了多个设备或物品(无论它们是否协作)的情况下,将显而易见的是,可以使用单个设备或物品来代替多个设备或物品,或者可以使用不同数目的设备/物品代替所示数目的设备或程序。设备的功能和/或特性可以替代地由一个或多个其他未明确描述为具有此类功能/特性的设备来体现。因此,本发明的其他优选实施例不必包括设备本身。图4-6的示意性操作显示以特定顺序发生的特定事件。在备选实施例中,特定操作能以不同的顺序执行、修改或移除。而且,可将步骤添加到上述逻辑,且仍然遵循描述的实施例。另外,在此描述的操作可连续发生或特定操作可被平行处理。此外,可由单个处理单元或分布式处理单元来执行操作。出于例示与描述的目的,已提供本发明的各种优选实施例的上述描述。所述描述并非旨在是穷举的或是将本发明限于所公开的精确形式。鉴于以上教导,许多修改与变型是可能的。本发明的范围不受此详细描述的限制,而是由所附权利要求书限制。上述说明书、实例以及数据提供对本发明组成的制造与使用的完整描述。由于可在不偏离本发明的精神与范围的情况下实现本发明的许多实施例,所以本发明主张的权利在以下所附的权利要求书内。